package tresp.utils;

import robocode.Condition;


/**
 * <b>ITankInfo</b>
 * 
 * 
 * @author <font color="blue">Maxim Kirilov</font>
 *
 */
public interface ITankInfo {

    /**
     * 
     * @Returns the X position of the robot.
     */
    double getX();
    
    /**
     * 
     * @Returns the Y position of the robot
     */
    double getY();
    
    
    /**
     * 
     * @Returns the direction that the robot's gun is facing, in degrees.
     */
    double getGunHeading();
    
    /**
     * 
     * @Returns the direction that the robot's gun is facing, in radians.
     */
    double getGunHeadingRadians();
    
    /**
     * 
     * @Returns the current heat of the gun.
     */
    double getGunHeat();
    
    
    /**
     * 
     * @Returns the direction that the robot's radar is facing, in degrees.
     */
    double getRadarHeading();
    
    
    /**
     * 
     * @Returns the direction that the robot's radar is facing, in radians.
     */
    double getRadarHeadingRadians();
    
    /**
     * 
     * @Returns the velocity of the robot measured in pixels/turn.
     */
    double getVelocity();
    
    /**
     * 
     * @return
     */
    double getHeadingRadians();
    
    
    double getHeading();
    
    /**
     * 
     * @return
     */
    double getEnergy();
    
    
    /**
     * 
     * @Returns the number of rounds in the current battle.
     */
    int getRoundNum();
    
    
    /**
     * 
     * @Returns the width of the current battlefield measured in pixels.
     */
    double getBattleFieldWidth();
    
    /**
     * 
     * @Returns the height of the current battlefield measured in pixels.
     */
    double getBattleFieldHeight();
    
    /**
     * 
     * @Returns the distance remaining in the robot's current move measured in pixels.
     */
    double getDistanceRemaining();
    
    /**
     * Checks if a given robot name is the name of one of your teammates.
     * @param name
     * @return
     */
    boolean isTeammate(String name);
    
    /**
     * 
     * @return
     */
    double  getGunTurnRemaining();
    
    /**
     * 
     * @return the game time/turn of the current round.
     */
    long getTime();
    
    void removeCustomEvent(Condition condition);
    
    void addCustomEvent(Condition condition);
}
